In non-volatile memory based storage devices, such as, NAND flash, phase-change memory (PCM), magnetoresistive RAM (MRAM) or resistive RAM (RRAM or ReRAM) based storage devices, data layout must incorporate redundancy so that failure of a media unit, for example, a flash chip, or failure to reach a media unit, for example, when the connection to the media unit is broken, is tolerated in the system and data remains available.
One approach for implementing redundancy is using exclusive-OR (“XOR”) based parity. According to this approach, data blocks of identical size stored across multiple, independent storage units are XOR'ed to produce a parity block that is stored in a separate media unit. This approach tolerates the failure of one media unit. By XOR'ing the data from the remaining units and the data in the parity block, the data stored in the failed unit can be reconstructed.
Implementing XOR-based redundancy in Non-Volatile Memory (NVM), for example, PCMs, ReRAMs and MRAMs, solid state drives (“SSD”) is especially challenging due to NVM memory characteristics, high performance requirements, requirement to store data consistently in the event of a power loss and space efficiency constraints.
Accordingly, there is a need for an XOR-based parity scheme that meets requirements for high throughput, low latency, flexibility, low space overhead, and robustness against unexpected power loss.